home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / cheesesauce / land.s < prev    next >
Text File  |  1997-11-28  |  12KB  |  897 lines

  1.  
  2.  
  3.  
  4.  
  5. maxscrdiv EQU 8
  6. max3ddiv EQU 5
  7.  
  8. zsinval EQU 8    ;w
  9. zcosval EQU 10    ;w
  10. ztox EQU 12    ;l
  11. xsinval EQU 16    ;w
  12. xcosval EQU 18    ;w
  13. xspd EQU 20    ;w
  14. zspd EQU 22    ;w
  15. mapx EQU 24    ;b
  16. mapz EQU 25    ;b
  17. whichtile EQU 26 ;b
  18. xofflight EQU 28    ;w
  19. zofflight EQU 30    ;w
  20. offlight EQU 32        ;w
  21. zlinestore EQU 34
  22. zlinedir EQU 38
  23. zposdir EQU 40
  24. zposstore EQU 42
  25. xdiststore EQU 44
  26. xdistdir EQU 46
  27. zwallfound EQU 48
  28.  
  29. xlinestore EQU 50
  30. xlinedir EQU 54
  31. xposdir EQU 56
  32. xposstore EQU 58
  33. zdiststore EQU 60
  34. zdistdir EQU 62
  35. xwallfound EQU 64
  36.  
  37.  
  38. midoffset EQU 104*4*40
  39.  
  40.  SECTION Scrn,CODE_c
  41.  
  42. OpenLib         equ -552        ; Offset for OpenLibrary.
  43. CloseLib        equ -414        ; Offset for CloseLibrary.
  44.  
  45. vhposr        equ $006
  46. vhposrl        equ $007 
  47. bltcon0        equ $40
  48. bltcon1        equ $42
  49. bltcpt        equ $48
  50. bltbpt        equ $4c
  51. bltapt        equ $50
  52. spr0ctl        equ $142
  53. spr1ctl        equ $14a
  54. spr2ctl        equ $152
  55. spr3ctl        equ $15a
  56. spr4ctl        equ $162
  57. spr5ctl        equ $16a
  58. spr6ctl        equ $172
  59. spr7ctl        equ $17a
  60. spr0pos        equ $140
  61. spr1pos        equ $148
  62. spr2pos        equ $150
  63. spr3pos        equ $158
  64. spr4pos        equ $160
  65. spr5pos        equ $168
  66. spr6pos        equ $170
  67. spr7pos        equ $178
  68. bltdpt         equ $54
  69. bltafwm        equ $44
  70. bltalwm        equ $46
  71. bltsize         equ $58
  72. bltcmod         equ $60
  73. bltbmod         equ $62
  74. bltamod         equ $64
  75. bltdmod         equ $66
  76. diwstart        equ $8e         ; Screen hardware registers.
  77. diwstop         equ $90
  78. ddfstart        equ $92
  79. ddfstop         equ $94
  80. bplcon0         equ $100
  81. bplcon1         equ $102
  82. col0            equ $180
  83. col1            equ $182
  84. col2        equ $184
  85. col3        equ $186
  86. col4        equ $188
  87. col5        equ $18a
  88. col6        equ $18c
  89. col7        equ $18e
  90. col8            equ $190
  91. col9            equ $192
  92. col10           equ $194
  93. dmacon        equ $96
  94. dmaconr        equ $002
  95. intenar        equ $01c
  96. intena        equ $09a
  97. intreq        equ $09c
  98. intreqr        equ $01e
  99. intreqrl    equ $01f
  100. bpl1pth         equ $e0
  101. bpl1ptl         equ $e2
  102. bpl2pth        equ $e4
  103. bpl2ptl        equ $e6
  104. bpl3pth        equ $e8
  105. bpl3ptl        equ $ea
  106. bpl4pth        equ $ec
  107. bpl4ptl        equ $ee
  108. bpl5pth        equ $f0
  109. bpl5ptl        equ $f2
  110. bpl6pth        equ $f4
  111. bpl6ptl        equ $f6
  112. bpl7pth        equ $f8
  113. bpl7ptl        equ $fa
  114.  
  115. ** This waits for the blitter to finish before allowing program
  116. ** execution to continue.
  117.  
  118. WB MACRO
  119. \@bf:
  120.  btst #6,dmaconr(a6)
  121.  bne.s \@bf
  122.  ENDM
  123.  
  124. *Another version for when d6 <> dff000
  125.  
  126. WBSLOW MACRO
  127. \@bf:
  128.  btst #6,$dff000+dmaconr
  129.  bne.s \@bf
  130.  ENDM
  131.  
  132.  
  133. **
  134.  
  135.  include "macros.i"
  136.  
  137.  move.w (a0),option
  138.  
  139.  jmp stuff
  140. endstuff:
  141.  
  142.  move.l #$dff000,a6    ; NB V. IMPORTANT: A6=CUSTOM BASE
  143.  move.w #$87c0,dmacon(a6)
  144.  move.w #$0020,dmacon(a6)
  145.  move.w intenar(a6),saveinters
  146.  move.w #$7fff,intena(a6)
  147.  move.w #$c010,intena(a6)
  148.  
  149. *** Put myself in supervisor mode
  150.  
  151.  move.w #$20,$dff1dc
  152.  
  153.  move.l #blag,$80
  154.  trap #0
  155.  rts
  156.  
  157. saveit: dc.l 0
  158.  
  159. blag:
  160.  move.w #$10,intreq(a6)
  161.  move.w #$7fff,intena(a6)
  162.  
  163.  
  164.  move.l #bigfield,$dff080    ; Point the copper at our copperlist.
  165.  move.l #$dff000,a6    ; a6 points at the first custom chip register.
  166.  
  167.  move.w #0,d0
  168.  
  169.  move.l #scrn,d0
  170.  move.w d0,pl1l
  171.  swap d0
  172.  move.w d0,pl1h
  173.  
  174.  move.l #scrn+40,d0
  175.  move.w d0,pl2l
  176.  swap d0
  177.  move.w d0,pl2h
  178.  
  179.  move.l #scrn+80,d0
  180.  move.w d0,pl3l
  181.  swap d0
  182.  move.w d0,pl3h
  183.  
  184.  move.l #scrn+120,d0
  185.  move.w d0,pl4l
  186.  swap d0
  187.  move.w d0,pl4h
  188.  
  189.  move.l #scrn+160,d0
  190.  move.w d0,pl5l
  191.  swap d0
  192.  move.w d0,pl5h
  193.  
  194.  move.l #scrn+200,d0
  195.  move.w d0,pl6l
  196.  swap d0
  197.  move.w d0,pl6h
  198.  
  199.  move.l #scrn+240,d0
  200.  move.w d0,pl7l
  201.  swap d0
  202.  move.w d0,pl7h
  203.  
  204.  move.l #colbars,a0
  205.  move.l #colbars2,a2
  206.  move.w #127,d0
  207.  move.l #0,d6
  208.  move.w #0,d3
  209.  move.w #$2bdf,startwait
  210.  move.w #$2d01,endwait
  211. fillcop
  212.  move.w #$180,d1
  213.  
  214.  move.l a0,a1
  215.  move.l a2,a3
  216.  move.w #$10c,(a1)+
  217.  move.w #$10c,(a3)+
  218.  move.w d3,(a1)+
  219.  move.w d3,(a3)+
  220.  eor.w #$8000,d3
  221.  
  222.  move.w #$106,(a1)+
  223.  move.w #$106,(a3)+
  224.  move.w #$2c40,d5
  225.  or.w d3,d5
  226.  move.w d5,(a1)+
  227.  move.w d5,(a3)+
  228.  bsr do32
  229.  
  230.  move.w #$106,(a1)+
  231.  move.w #$106,(a3)+
  232.  move.w #$4c40,d5
  233.  or.w d3,d5
  234.  move.w d5,(a1)+
  235.  move.w d5,(a3)+
  236.  bsr do32
  237.  
  238.  move.w #$106,(a1)+
  239.  move.w #$106,(a3)+
  240.  move.w #$6c40,d5
  241.  or.w d3,d5
  242.  move.w d5,(a1)+
  243.  move.w d5,(a3)+
  244.  bsr do32
  245.  
  246. **********************************
  247.  
  248.  cmp.b #'s',option
  249.  beq.s smallscrn
  250.  
  251.  move.w startwait,(a1)+
  252.  move.w #$fffe,(a1)+
  253.  move.w endwait,(a1)+
  254.  move.w #$ff00,(a1)+
  255.  move.w startwait,(a3)+
  256.  move.w #$fffe,(a3)+
  257.  move.w endwait,(a3)+
  258.  move.w #$ff00,(a3)+
  259.  
  260.  add.w #$300,startwait
  261.  add.w #$300,endwait
  262.  
  263. smallscrn: 
  264. **********************************
  265.  
  266.  adda.w #104*4,a0
  267.  adda.w #104*4,a2
  268.  
  269.  dbra d0,fillcop
  270.  
  271. **********************************
  272.  cmp.b #'s',option
  273.  beq smallnotlarge
  274.  move.w #$38,fetchstart
  275.  move.w #$b8,fetchstop
  276.  move.w #$2c81,winstart
  277.  move.w #$2cc1,winstop
  278.  move.w #-40,modulo
  279.  move.w #-40,modulo+4
  280.  
  281.  move.l #scrn+40,a0
  282.  move.l #scrn+160,a1
  283.  move.l #scrn+280,a2
  284.  move.l #scrntab,a3
  285.  move.w #319,d7    ; counter
  286.  move.w #0,d1    ; xpos
  287. plotscrnloop:
  288.  move.b (a3)+,d0
  289.  move.w d1,d2
  290.  asr.w #3,d2
  291.  move.b d1,d3
  292.  not.b d3
  293.  bclr.b d3,-40(a0,d2.w)
  294.  bclr.b d3,(a0,d2.w)
  295.  bclr.b d3,40(a0,d2.w)
  296.  bclr.b d3,-40(a1,d2.w)
  297.  bclr.b d3,(a1,d2.w)
  298.  bclr.b d3,40(a1,d2.w)
  299.  bclr.b d3,-40(a2,d2.w)
  300.  btst #0,d0
  301.  beq.s nobp1
  302.  bset.b d3,-40(a0,d2.w)
  303. nobp1:
  304.  btst #1,d0
  305.  beq.s nobp2
  306.  bset.b d3,(a0,d2.w)
  307. nobp2:
  308.  btst #2,d0
  309.  beq.s nobp3
  310.  bset.b d3,40(a0,d2.w)
  311. nobp3:
  312.  btst #3,d0
  313.  beq.s nobp4
  314.  bset.b d3,-40(a1,d2.w)
  315. nobp4:
  316.  btst #4,d0
  317.  beq.s nobp5
  318.  bset.b d3,(a1,d2.w)
  319. nobp5:
  320.  btst #5,d0
  321.  beq.s nobp6
  322.  bset.b d3,40(a1,d2.w)
  323. nobp6:
  324.  btst #6,d0
  325.  beq.s nobp7
  326.  bset.b d3,-40(a2,d2.w)
  327. nobp7:
  328.  
  329.  addq #1,d1
  330.  
  331.  dbra d7,plotscrnloop
  332.  
  333. smallnotlarge:
  334.  
  335. **********************************
  336.  
  337. ****************************
  338. ; bsr initobjpos
  339. ****************************
  340.  
  341. lop: 
  342.  
  343.  move.l #$dff000,a6
  344.  
  345. waitfortop:
  346.  btst.b #0,intreqrl(a6)
  347.  beq waitfortop
  348.  move.w #$1,intreq(a6)
  349.  
  350.  
  351.  move.l drawpt,d0
  352.  move.l olddrawpt,drawpt
  353.  move.l d0,olddrawpt
  354.  move.l d0,$dff084
  355.  move.l drawpt,a3
  356.  adda.w #10,a3
  357.  move.l a3,frompt
  358.  add.l #104*4*40,a3
  359.  move.l a3,midpt
  360.  
  361.  move.l #landfile,a1
  362.  move.l #landpic,a5
  363.  move.l frompt,a0
  364.  move.l #104*4,d0
  365.  move.l #landcheat+(48+90)*4,a2
  366.  
  367.  move.w angspd,d1
  368.  move.w ang,d0
  369.  
  370.  move.w #2,d7
  371.  
  372.  move.w d1,d2
  373.  neg.w d2
  374.  cmp.w d7,d2
  375.  ble.s okslow
  376.  move.w d7,d2
  377. okslow
  378.  neg.w d7
  379.  cmp.w d7,d2
  380.  bge.s okslo
  381.  move.w d7,d2
  382. okslo:
  383.  
  384.  asr.w #1,d7
  385.  
  386.  btst #1,$d(a6)
  387.  sne d3
  388.  beq.s notleft
  389.  move.w d7,d2
  390.  neg.w d2
  391. ; tst.w d1
  392. ; bge.s notleft
  393. ; moveq #0,d1
  394. notleft
  395.  
  396.  btst #1,$c(a6)
  397.  sne d4
  398.  beq.s notright
  399.  move.w d7,d2
  400. ; tst.w d1
  401. ; ble.s notright
  402. ; moveq #0,d1
  403. notright
  404.  
  405.  move.w #0,Spd
  406.  
  407.  btst #0,$dff00c
  408.  sne d5
  409.  eor.b d4,d5
  410.  beq.s notup
  411.  move.w #4,Spd
  412. notup:
  413.  
  414.  btst #0,$dff00d
  415.  sne d5
  416.  eor.b d3,d5
  417.  beq.s notdown
  418.  move.w #-4,Spd
  419. notdown:
  420.  
  421.  move.w Spd,d7
  422.  
  423.  add.w d2,d1
  424.  cmp.w #-10,d1
  425.  bge.s okspdlft
  426.  move.w #-10,d1
  427. okspdlft:
  428.  cmp.w #10,d1
  429.  ble.s okspdrgt
  430.  move.w #10,d1
  431. okspdrgt:
  432.  
  433.  move.w d1,angspd
  434.  add.w d1,d0
  435.  ext.l d0
  436.  add.l #360,d0
  437.  divs #360,d0
  438.  swap d0
  439.  move.w d0,ang
  440.  
  441.  lea (a2,d0.w*4),a2
  442.  move.l (a2),d0
  443.  asr.l #8,d0
  444.  move.w d0,tempx
  445.  
  446.  muls d0,d7
  447.  add.w d7,zpos
  448.  
  449.  suba.w #90*4,a2
  450.  move.l (a2),temp
  451.  suba.w #48*4,a2
  452.  
  453.  move.w Spd,d7
  454.  add.w d7,d7
  455.  move.l temp,d0
  456.  asr.l #1,d0
  457.  muls d0,d7
  458.  asr.l #8,d7
  459.  add.w d7,xpos
  460.  
  461.  move.w zpos,d7
  462.  move.b xpos,d7
  463.  move.w d7,zoff
  464.  
  465.  move.w #2,d7
  466.  moveq #0,d4
  467.  moveq #0,d1
  468.  moveq #0,d6
  469.  move.w zoff,d6
  470.  moveq #0,d0
  471.  move.b (a1,d6.l),d0
  472.  sub.b #160,d0
  473.  
  474. ; d0 = targyoff
  475.  
  476.  move.w yoff,d1
  477.  sub.w d1,d0
  478.  bgt.s notinfloor
  479.  add.w d0,d1
  480.  asl.w #1,d0
  481.  
  482.  cmp.w yvel,d0
  483.  bge.s nopushup
  484.  
  485.  move.w d0,yvel
  486. nopushup:
  487. notinfloor:
  488.  move.w yvel,d0
  489.  asr.w #2,d0
  490.  add.w d0,d1
  491.  
  492.  bge.s okoffset
  493.  move.w #0,d1
  494. okoffset:
  495.  
  496.  and.w #$ff,d1
  497.  move.w d1,yoff
  498.  
  499.  add.w #4,yvel
  500.  
  501. donemovey
  502.  
  503.  move.l #heightcheat,a6
  504.  move.w yoff,d0
  505.  sub.w d0,a6
  506.  move.w #256,d5
  507.  move.l frompt,a4
  508.  add.l #100*104*4,a4
  509.  
  510.  move.l #skypic,skyaddr
  511.  
  512.  move.w ang,d2
  513.  
  514.  muls #320,d2
  515.  add.l d2,skyaddr
  516.  
  517.  move.l #landpal+512*5,a3
  518.  
  519.  bsr doblock
  520.  addq #4,a4
  521.  bsr doblock
  522.  addq #4,a4
  523.  bsr doblock
  524.  
  525.  move.l #$dff000,a6
  526.  
  527.  btst #6,$bfe001
  528.  beq end
  529.  
  530.  bra lop
  531.  
  532. end:
  533.  move.w #$f8e,$dff1dc
  534.  jmp closeeverything 
  535.  
  536. spd: dc.w 0
  537. ang: dc.w 0
  538. angspd: dc.w 0
  539. tempx: dc.l 0
  540. zoff: dc.w 0
  541. option: dc.w 0
  542. temp: dc.l 0
  543.  
  544. yvel: dc.w 0
  545.  
  546. xpos: dc.w 0
  547. zpos: dc.w 0
  548.  
  549. doblock:
  550.  move.w #31,d3
  551. acrossl:
  552.  move.l 90*4(a2),d5
  553.  asr.l #8,d5
  554.  move.l (a2)+,a0
  555.  add.l temp(pc),a0
  556.  add.w tempx(pc),d5
  557.  moveq #0,d7
  558.  swap d3
  559.  move.w zoff(pc),d3
  560.  move.w d6,-(a7)
  561.  moveq #0,d4
  562.  swap d6
  563.  clr.w d6
  564.  move.l a6,-(a7)
  565.  move.l a4,-(a7)
  566.  swap d5
  567.  move.w #14,d5
  568.  moveq.l #39,d2
  569. outerland:
  570.  swap d5
  571. putinland:
  572.  move.w d3,d4
  573.  swap d6
  574.  move.b d6,d4
  575.  swap d6
  576.  add.l a0,d6
  577.  add.w d5,d3
  578.  move.b (a1,d4.l),d1
  579.  move.b (a6,d1.w),d0
  580.      
  581.  sub.b d7,d0
  582.  ble.s allbehind 
  583.  swap d2
  584.  add.b d0,d7
  585.  move.b (a5,d4.l),d2
  586.  move.w (a3,d2.w*2),d4
  587. upstrip
  588.  move.w d4,(a4)
  589.  suba.w #104*4,a4
  590.  subq #1,d0
  591.  bgt.s upstrip
  592.  swap d2
  593.  
  594. allbehind:
  595.  adda.w #256,a6
  596.  dbra d2,putinland 
  597.  
  598.  swap d5
  599.  moveq.l #3,d2
  600.  adda.w #512,a3
  601.  dbra d5,outerland
  602.  
  603.  move.l #landpal,a3
  604.  
  605.  move.l skyaddr(pc),a6
  606.  move.w #99,d2
  607.  sub.w d7,d2
  608.  ble.s noclrbit
  609.  lea (a6,d2.w*2),a6
  610. clrbit:
  611.  move.w -(a6),(a4)
  612.  suba.w #104*4,a4
  613.  subq #1,d2
  614.  bgt.s clrbit
  615. noclrbit:
  616.  
  617.  move.l skyaddr,d2
  618.  add.l #160,d2
  619.  cmp.l #endsky,d2
  620.  blt.s nobacktobeginning
  621.  
  622.  move.l #skypic,d2
  623.  
  624. nobacktobeginning:
  625.  move.l d2,skyaddr
  626.  
  627.  move.l (a7)+,a4
  628.  move.l (a7)+,a6
  629.  move.w (a7)+,d6
  630.  addq #4,a4
  631.  swap d3
  632.  dbra d3,acrossl
  633.  rts
  634.  
  635. skyaddr: dc.l 0
  636.  
  637. do32:
  638.  move.w #31,d7
  639.  move.w #$180,d1
  640. across:
  641.  move.w d1,(a1)+
  642.  move.w d1,(a3)+
  643.  move.w #0,(a1)+
  644.  move.w #0,(a3)+
  645.  add.w #2,d1
  646.  dbra d7,across
  647.  rts
  648.  
  649.  
  650.  
  651. *************************************
  652. * Set left and right clip values
  653. *************************************
  654.  
  655.  
  656. everyframe:
  657.  
  658.  move.w #$0010,$dff000+intreq
  659.  
  660.  rte
  661.  
  662. saveinters:  
  663.  dc.w 0
  664.  
  665. z: dc.w 10
  666. midpt: dc.l 0
  667.  
  668. test: dc.l 0
  669.  ds.l 30
  670.  
  671. drawpt: dc.l colbars2
  672. olddrawpt: dc.l colbars
  673. frompt: dc.l colbars2 
  674.  
  675. Spd:
  676. angpos: dc.w 0
  677. wallyoff: dc.w 0
  678. flooryoff: dc.w 0
  679. xoff: dc.l 0
  680. yoff: dc.w 255-160
  681. tyoff: dc.l 0
  682.  
  683. liftanimtab:
  684.  
  685. endliftanimtab:
  686.  
  687. Roompt: dc.l 0
  688. OldRoompt: dc.l 0
  689.  
  690. wallpt: dc.l 0
  691. floorpt: dc.l 0
  692.  
  693. Rotated:
  694.  ds.l 800 
  695.  
  696. OnScreen:
  697.  ds.l 800 
  698.  
  699. startwait: dc.w 0
  700. endwait: dc.w 0
  701.  
  702.  
  703. landcheat: incbin "work:inc/smallcheatfile"
  704. landfile: incbin "work:inc/landfile"
  705. heightcheat: incbin "work:inc/heightcheat"
  706. landpic: incbin "work:inc/landpic"
  707. landpal: incbin "work:inc/landpal"
  708.  
  709. skypic: dcb.w 160*360,$742
  710. endsky:
  711.  
  712.  SECTION ffff,CODE_C
  713.  
  714. bigfield:                    ; Start of our copper list.
  715.  
  716.  dc.w intreq,$8001
  717.  dc.w $1fc,$3
  718.  dc.w diwstart
  719. winstart: dc.w $2cb1
  720.  dc.w diwstop
  721. winstop: dc.w $2c91
  722.  dc.w ddfstart
  723. fetchstart: dc.w $48
  724.  dc.w ddfstop
  725. fetchstop: dc.w $88
  726.  
  727.  dc.w bplcon0,$7201
  728.  dc.w bplcon1
  729. smoff:
  730.  dc.w $0
  731.  
  732.  dc.w col0,0
  733.  
  734.  dc.w $108
  735. modulo: dc.w -24
  736.  dc.w $10a,-24
  737.  
  738.  dc.w bpl1pth
  739. pl1h
  740.  dc.w 0
  741.  
  742.  dc.w bpl1ptl
  743. pl1l
  744.  dc.w 0
  745.  
  746.  dc.w bpl2pth
  747. pl2h
  748.  dc.w 0
  749.  
  750.  dc.w bpl2ptl
  751. pl2l
  752.  dc.w 0
  753.  
  754.  dc.w bpl3pth
  755. pl3h
  756.  dc.w 0
  757.  
  758.  dc.w bpl3ptl
  759. pl3l
  760.  dc.w 0
  761.  
  762.  dc.w bpl4pth
  763. pl4h
  764.  dc.w 0
  765.  
  766.  dc.w bpl4ptl
  767. pl4l
  768.  dc.w 0
  769.  
  770.  dc.w bpl5pth
  771. pl5h
  772.  dc.w 0
  773.  
  774.  dc.w bpl5ptl
  775. pl5l
  776.  dc.w 0
  777.  
  778.  dc.w bpl6pth
  779. pl6h
  780.  dc.w 0
  781.  
  782.  dc.w bpl6ptl
  783. pl6l
  784.  dc.w 0
  785.  
  786.  dc.w bpl7pth
  787. pl7h
  788.  dc.w 0
  789.  
  790.  dc.w bpl7ptl
  791. pl7l
  792.  dc.w 0
  793.  
  794.  
  795.  dc.w $1001,$ff00
  796.  dc.w intreq,$1
  797. yposcop:
  798.  dc.w $2a11,$fffe
  799.  dc.w $8a,0
  800.  
  801.  dcb.l 104*40,$1fe0000
  802. colbars:
  803. val SET $2a
  804.  dcb.l 104*128,$1fe0000
  805.  
  806.  dc.w $ffff,$fffe       ; End copper list.
  807.  
  808. old dc.l 0
  809.  
  810.  dcb.l 104*40,$1fe0000
  811.  
  812. colbars2:
  813. val SET $2a
  814.  dcb.l 104*128,$1fe0000
  815.  
  816.  dc.w $106,$c40
  817.  dc.w $180
  818. signal: dc.w 0
  819.  
  820.  dc.w $ffff,$fffe       ; End copper list.
  821.  
  822.  dc.w $0
  823.  
  824.  
  825. ********************************************
  826. * Stuff you don't have to worry about yet. *
  827. ********************************************
  828.  
  829. closeeverything:
  830.  move.l old,$dff080     ; Restore old copper list.
  831.  move.w #$8020,dmacon(a6)
  832.  move.w saveinters,d0
  833.  or.w #$c000,d0
  834.  move.w d0,intena(a6)
  835.  clr.w $dff0a8
  836.  clr.w $dff0b8
  837.  clr.w $dff0c8
  838.  clr.w $dff0d8
  839.  rte
  840.  
  841. stuff:
  842.  move.l 4.w,a6          ; Get EXECBASE.
  843.  lea gfxname(PC),a1     ; Point to 'graphics.library' string.
  844.  moveq #0,d0            ; Ignore version number.
  845.  jsr OpenLib(a6)        ; Open the library.
  846.  move.l d0,a1           ; Store library address.
  847.  move.l 38(a1),old      ; Store workbench copper address.
  848.  move.l 4.w,a6          ; Get EXECBASE again.    
  849.  jsr CloseLib(a6)       ; Close the library.
  850.  
  851.  jmp endstuff
  852.  
  853. gfxname dc.b "graphics.library",0
  854.  
  855. scrntab:
  856.  ds.b 16
  857. val SET 32
  858.  REPT 96
  859.  dc.b val,val,val
  860. val SET val+1
  861.  ENDR
  862.  ds.b 16
  863.  
  864.  cnop 0,64
  865. scrn:
  866.  
  867.  dcb.l 8,$33333333
  868.  dc.l 0
  869.  dc.l 0
  870.  
  871.  dcb.l 8,$0f0f0f0f
  872.  dc.l 0
  873.  dc.l 0
  874.  
  875.  dcb.l 8,$00ff00ff
  876.  dc.l 0
  877.  dc.l 0
  878.  
  879.  dcb.l 8,$0000ffff
  880.  dc.l 0
  881.  dc.l 0
  882.  
  883.  dc.l 0,-1,0,-1,0,-1,0,-1
  884.  dc.l 0
  885.  dc.l 0
  886.  
  887.  dc.l -1,-1,0,0,-1,-1,0,0
  888.  dc.l 0
  889.  dc.l 0
  890.  
  891.  dc.l 0,0,-1,-1,-1,-1,-1,-1
  892.  dc.l 0
  893.  dc.l 0
  894.  
  895.  
  896.  
  897.